package b_中等;

import Entity.TreeNode;

/**
*给定一个二叉树，判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征：
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:
    2
   / \
  1   3
输出: true
* @author hecai
* @date 2020年5月5日
*/
public class 验证二叉搜索树 {
	long lastVal = Long.MIN_VALUE;
	public boolean isValidBST(TreeNode root) {
		return deal(root);	
    }
	//中序遍历
	boolean deal(TreeNode root) {
		if(root == null)			
			return true;
		if(!deal(root.left)) {
			return false;
		}
		if(root.val <= lastVal) {
			return false;
		}
		lastVal = root.val;
		if(!deal(root.right)) {
			return false;
		}
		return true;
	}
}
